# enable warnings
function(enable_warnings target)
  if(MSVC)
    target_compile_definitions(${target} PRIVATE _CRT_SECURE_NO_WARNINGS)
    target_compile_options(${target} PRIVATE /W4)
    if (NOT IGNORE_WARNINGS)
      target_compile_options(${target} PRIVATE /WX)
    endif()
  elseif("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
    target_compile_options(${target} PRIVATE -Wall)
    target_compile_options(${target} PRIVATE -Wextra)
    target_compile_options(${target} PRIVATE -Wpedantic)
    target_compile_options(${target} PRIVATE -Wno-gnu-zero-variadic-macro-arguments)
    if (NOT IGNORE_WARNINGS)
      target_compile_options(${target} PRIVATE -Werror)
    endif()
  elseif("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU")
    target_compile_options(${target} PRIVATE -Wall)
    target_compile_options(${target} PRIVATE -Wextra)
    target_compile_options(${target} PRIVATE -Wpedantic)
    if (NOT IGNORE_WARNINGS)
      target_compile_options(${target} PRIVATE -Werror)
    endif()
  endif()
endfunction()
